1. Field of The Invention
This invention relates to wireless communications and, more particularly, to a system for generating a complex scrambling code sequence.
2. Description of Related Art
FIG. 1 depicts a schematic diagram of a portion of a typical wireless communications system 10, which provides wireless communications service to a number of wireless units 12a-c, such as mobile or fixed units, that are situated within a geographic region. The heart of a typical wireless communications system is a Mobile Switching Center (xe2x80x9cMSCxe2x80x9d) 14, which might be known also as a Wireless Switching Center (xe2x80x9cWSCxe2x80x9d) or a Mobile Telephone Switching Office (xe2x80x9cMTSOxe2x80x9d). Typically, the Mobile Switching Center 14 is connected to a plurality of base stations, such as base stations 16a-c, that are dispersed throughout the geographic area serviced by the system and to the local and long-distance telephone offices, such as local-office 18, local-office 20 and toll-office 22). The Mobile Switching Center 14 is responsible for, among other things, establishing and maintaining calls between the wireless units and calls between a wireless unit and a wireline unit (e.g., wireline unit 24), which wireline unit is connected to the Mobile Switching Center 14 via the local and/or long-distance networks.
The geographic area serviced by a wireless communications system is divided into spatially distinct areas called xe2x80x9ccells.xe2x80x9d As depicted in FIG. 1, each cell is schematically represented by one hexagon in a honeycomb pattern; in practice, however, each cell has an irregular shape that depends on the topography of the terrain surrounding the cell and other factors. Typically, each cell contains a base station, which comprises the radios and antennas that the base station uses to communicate with the wireless units in that cell and also comprises the transmission equipment that the base station uses to communicate with Mobile Switching Center 14. For example, when wireless terminal 12b desires to communicate with wireless unit 12c, wireless unit 12b transmits the desired information to base station 16c, which relays the information to Mobile Switching Center 14. Upon receipt of the information, and with the knowledge that it is intended for wireless unit 12c, Mobile Switching Center 14 then returns the information back to base station 16c, which relays the information, via radio, to wireless unit 12c. 
In a spread spectrum wireless communications system, the information signal or baseband data sent between the base station 16c and the mobile unit 12c is multiplied by a spread spectrum signal. Certain spread spectrum systems, such as code-division multiple access (CDMA) systems, spread and/or scramble the baseband data information signal by multiplying the information signal with a spreading and/or scrambling code sequence (xe2x80x9cscrambling code sequencexe2x80x9d), such as a pseudo-noise (PN) code which is a binary sequence that appears random but can be reproduced by the intended receiving station. When the scrambling code sequence has the same pulse rate as the information signal, the product of the scrambling code sequence and the information signal is scrambled, and the spectrum is unchanged. When the scrambling code sequence has a faster pulse rate than the information signal, the product of the scrambling code sequence and the information signal has its spectrum spread in addition to being scrambled. A single pulse of the scrambling code sequence is called a chip.
FIG. 2 shows a general block diagram of a CDMA transmitter 30 and receiver 31. The CDMA transmitter 30 spreads and/or scrambles the information or data signal to produce a spread spectrum signal for transmission, and the CDMA receiver 31 de-scrambles and/or de-spreads the spread spectrum signal to retrieve the information or data signal. At the transmitter 30, the original data is manipulated by the coder and/or processing block 32, which can perform speech coding, channel coding, bit interleaving, digital modulation as well as other functions, to produce the information or data signal D(t) (xe2x80x9cinformation signalxe2x80x9d). A scrambling code sequence generator 33 generates the scrambling code sequence, and a multiplier 34 multiplies the scrambling code sequence with the information signal D(t) to produce the wide band or spread spectrum information signal y(t). Modulator 35 modulates the spread spectrum information signal onto a carrier signal, for example using quadrature modulation, after which the spread spectrum signal is transmitted to the receiver 31. At the receiver 31, a demodulator 36 demodulates the signal transmitted from the transmitter 30 to produce the spread spectrum information signal y(t). The spread spectrum signal y(t) is multiplied by a multiplier 37 with a locally-generated version of the scrambling code sequence from a scrambling code generator 38. The multiplication with the correct scrambling code sequence de-spreads and/or de-scrambles the spread spectrum signal y(t) and restores the information signal D(t). Multiplying the spread spectrum signal y(t) from an undesired user with the scrambling code sequence results in a small amount of noise. A decoder and deprocessing block 39 manipulates the information signal D(t) to obtain the original data.
As shown, each process in the transmitter 30 has a peer in the receiver 31. When data is being transmitted from the base station and received by the wireless unit, the data is being sent over the forward link. When data is being transmitted from the wireless unit and received by the base station, the data is being sent over the reverse link. In current CDMA systems, there are differences between the forward link and reverse link processes as well as differences in how the scrambling code sequence is generated.
FIG. 3 shows how the reverse link scrambling code sequence is generated for the TIA/EIA-95-B standard (xe2x80x9cIS-95Bxe2x80x9d) using a (242xe2x88x921) bit long code and a 215 bit complex short code. A long code generator 40 generates a long code sequence which is the inner product of a 42-bit user mask 41, which is uniquely assigned to each user, and a 42-bit long code vector which is the state of a long code generator engine 42. The long code generator engine 42 can be based on a shift register which maintains the long code vector or state of the shift register, and the mask 41 is used select bits from the long code vector which are exclusive-ord (for example, using AND gate arrangement 43 and mod 2 summer 44) to produce the long code sequence. By performing the masking operation with the user specific mask 41, the long code is effectively time shifted a different amount for each user to produce the long code sequence. As such, the base station can identify the particular user. In IS-95B, where quadrature spreading and modulation is used, the long code sequence is provided to a quadrature spreader 45. Quadrature spreading ensures that other user interference appears to have random phase and amplitude.
The quadrature spreader and/or scrambler 45 multiplies long code sequence with the complex short code sequence. The complex short code sequence is generated using two independent generator polynomials of degree 15 as described in IS-95B to produce the in-phase (I) and quadrature (Q) short code sequences of the complex short code sequence. The I and Q short code sequences are chip synchronous, but otherwise independent of each other. An in-phase (I) mixer 46 effectively multiplies the long code sequence with the I short code sequence, and a quadrature mixer 47 effectively multiplies the long code sequence with the Q short code sequence. As such, the quadrature spreader 45 produces an I scrambling code sequence and a Q scrambling code sequence. In IS-95B, both the I spreading code sequence and the Q spreading code sequence are multiplied with the information signal D(t) to produce the I and Q spread spectrum signals yi(t) and yq(t) which are quadrature modulated and transmitted to the base station after being added together. Accordingly, multipliers 48a-b respectively multiply the information signal D(t) with the I spreading code sequence and the Q spreading code sequence to produce the in-phase spread spectrum signal yi(t) and the quadrature spread spectrum signal yq(t). Alternatively, the quadrature spreader 45 multiplies the short complex code with the product of the information signal D(t) and the long code sequence. As such, the information signal signal D(t) can be multiplied with the long code sequence by a multiplier 49 before the quadrature spreader 45 in which case the information signal D(t) is scrambled by the quadrature spreader 45 and has already been spread by the multiplication with the long code sequence.
FIG. 4 shows an embodiment of the long code sequence generator 40 of FIG. 3. The long code sequence generator 40 includes a long code generator engine 42, such as a linear feedback shift register with a 42 bit fixed generator polynomial 51. Initially, the current state of for the shift register is received by the mobile unit over the sync channel and loaded into the shift register as would be understood by one of skill in the art. The shift register is then clocked, and the 42 bit code vector or current state of the shift register is applied to the AND gate arrangement 43 along with the user mask 41. The outputs of the AND gate arrangement 43 are applied to the modulo 2 summer 44. The modulo 2 summer 44 produces the long code sequence which is a time shifted version of the long code. The time offset being introduced by the user mask 41.
Proposed CDMA systems referred to as cdma2000 propose using a reverse channel consisting of several physical channels: a reverse pilot channel which is always used, a reverse fundamental channel (R-FCH), one or more supplemental channel (R-SCH) and a reverse dedicated control channel (R-DCCH). Each physical channel is spread using a Walsh code sequence to provide orthogonal channelization among the physical channels. Unlike IS-95B where the data signal D(t) is provided to both the I path and the Q path, the spread pilot and R-DCCH are mapped to the in-phase (I) data path, and the spread R-FCH and R-SCH are mapped to the quadrature (Q) path to form the composite reverse link signal. Then, the I and Q data signals Di(t) and Dq(t) are scrambled by a complex scrambling code sequence by using a complex multiply operation. Because of the proposed reverse channel structure, the proposed CDMA systems use a complex long code sequence (whose I and Q components are two different real long codes) as the scrambling code sequence which is unique to each user. Various techniques for generating the complex scrambling code sequence have been proposed.
FIG. 5 shows a complex scrambling code generator 50 using one long code sequence generator engine 52 and two 42-bit user masks, an I-mask 54 and a Q-mask 56. In operation, the current long code generator state 58 is received by the mobile unit over the sync channel and loaded into a 42-bit linear feedback shift register of the code generator engine 52 as described in FIG. 4. The code vector from the shift register of the code generator engine 52 is exclusive-ord with the I-mask 54, for example using an AND gate arrangement 60 and a modulo 2 summer 62, to produce the I long code sequence which is used as the I scrambling code sequence. The code vector from the register of the generator engine 52 is also exclusive-ord with the Q-mask 56, for example using an AND gate arrangement 64 and a modulo 2 summer 66, to produce the Q long code sequence which is used as the Q scrambling code sequence. The I mask 54 can be the IS-95B user mask 42 (FIG. 4), and the Q-mask 56 can be a permutation of a subset of the I-mask bits or a different set of fixed bits, for example inverting bit 32 of the I-mask 54 to get the Q-mask 56. This approach may produce self-interference problems because the relative time offset of the user""s I and Q long code sequences may be small, thereby I and Q can cross interfere due to delay spread. Moreover, the relative time offset of the I long code sequence and the Q long code sequence cannot be computed easily. Thus, it would be difficult to pick user masks 54 and 56 that guarantee minimum time offset for all 4.3 billion long code sequences. Additionally, mutual interference problems can arises because there is no guaranteed delay between the I long code sequences (or Q long code sequences) of two different users. In principle, two users could interfere with each other due to path loss differences. The long code sequences of any two users should be sufficiently separated (delay greater than maximum difference in propagation delay).
FIG. 6 shows another complex scrambling code sequence generator 70 which uses a user mask 72 and two long code generator engines, an I long code generator engine 74 and a Q long code generator engine 76. The I long code generator engine 74 receives the current state 78 from the sync channel as called for in IS-95B, and the current state is loaded into a 42-bit linear feedback shift register of the I code generator engine 72 as described in FIG. 4. To avoid self-interference, the current state 78 is advanced by a certain number of chips (for example, 512 chips) as shown by block 80 and loaded into a 42-bit linear feedback shift register of the Q code generator engine 76. Advancing the bits of the Q state can be accomplished by loading the shift register of the Q long code generator engine 76 with the current state 78 and clocking the shift register ahead by the desired amount of chips. The I and Q long code generator engines 72 and 74 have the same generator polynomials. The code vector of the I long code generator shift register is exclusive-ord with the user mask 72, for example using an AND gate arrangement 82 and a modulo 2 summer 84, to produce the I long code sequence which is used as the I scrambling code sequence. The code vector from the Q long code generator shift register is also exclusive-ord with the user mask 72, for example using an AND gate arrangement 86 and a modulo 2 summer 88, to produce the Q long code sequence which is used as the Q scrambling code sequence. The user mask 72 can be the IS-95B user mask 42 (FIG. 4). This approach, however, increases the complexity of the circuitry and may produce mutual interference problems. Mutual interference problems can arise because among users, I long code sequences are unique and Q long code sequences are unique, but one user""s Q long code could be another user""s I long code. Again, mutual interference problems can arise because there is no guaranteed delay between the I long code sequences (or Q long code sequences) of two different users.
FIG. 7 shows another complex scrambling code sequence generator 90 which uses a user mask 92 and two long code generator engines, an I long code generator engine 94 and a Q long code generator engine 96. The I long code generator engine 94 receives the current I generator state 98 from the sync channel as called for in IS-95B, and the Q long code generator engine 96 receives the current Q generator state 100 from the sync channel. The I state is loaded into a 42-bit linear feedback shift register of the I generator engine 94, and the Q state is loaded into a 42-bit linear feedback shift register of the Q generator engine 96. The I and Q long code generator engines 94 and 96 have unique generator polynomials. The I long code generator engine 94 uses the IS-95B generator polynomial, and the Q long code generator engine 96 can use the reciprocal polynomial of the IS-95B generator polynomial. The code vector of the I long code generator engine 94 is exclusive-ord with the user mask 92, for example using an AND gate arrangement 102 and a modulo 2 summer 104, to produce the I long code sequence which is used as the I scrambling code sequence. The code vector from the Q long code generator engine register is also exclusive-ord with the user mask 92, for example using an AND gate arrangement 106 and a modulo 2 summer 108, to produce the Q long code sequence which is used as the Q scrambling code sequence. This approach reduces the interference problems but requires current I and Q states to be transmitted on the sync channel for both I and Q engine registers. Additionally, this system also does not guarantee the delay between the I long code sequences (or Q long code sequences) of two different users.
The mapping between the user mask value to an offset value for the long code is very complicated. Thus, a problem with the proposed schemes which employ only long code generators which are masked is the difficulty in guaranteeing the time difference between the I and/or Q scrambling code sequences of the same and/or different user""s.
The present invention involves a complex spreading and/or scrambling code sequence (xe2x80x9cscrambling code sequencexe2x80x9d) generation system which uses a first complex code sequence having at least two components and a second complex code sequence having at least two components. The components of the first complex code sequence are respectively mixed with the corresponding components of a second complex code sequence to generate the complex scrambling code sequence. In doing so, an offset between the components of the complex scrambling code sequence is achieved for the same and/or different users. For example, the complex spreading code sequence generation system can use a long code generator which produces a long code sequence produced from the inner product of a code vector and a user mask. The long code sequence is provided to an I path and a Q path. To produce a complex long code sequence, the long code sequence on the Q path is delayed to produce a second long code sequence on the Q path or a Q component of the complex long code sequence. On the I path, the I long code sequence or the I component of the complex long code sequence is mixed with an I component of a short code sequence to produce the I component of the complex scrambling code sequence. On the Q path, the Q long code sequence is mixed with a Q component of the short code sequence to produce the Q component of the complex scrambling code sequence. As such, the offset between the components of the complex scrambling code sequence for different and/or the same user is at least the period of the short code. The complex scrambling code sequence can be used for spreading, scrambling, de-spreading or de-scrambling an information signal.